The channel used in telecommunications systems frequently causes interference in data transmission. Interference occurs in all kinds of systems but particularly in wireless telecommunications systems the transmission path attenuates and distorts the signal to be transmitted in various ways. On the transmission path interference is typically caused by multi-path propagation of the signal and different kinds of fading and reflection as well as by other signals transmitted on the same transmission path.
To reduce the influence of interference, different coding methods have been provided to protect signals from interference and to eliminate errors caused by interference in the signals. One frequently used encoding method is convolutional encoding. In convolutional encoding the signal consisting of symbols is encoded into code words, which are based on the convolution of the symbols with themselves or with another signal. The coding rate and coding polynomials define the convolutional code. The coding rate (k/n) means the number (n) of encoded symbols in relation to the number (k) of symbols to be encoded. The coding is usually implemented by means of shift registers. The constraint length K of the code refers to the degree of coding polynomials plus one. The coding process may be regarded as a state machine with 2K-1 states.
A signal that has propagated on a channel is decoded in a receiver. The convolutional code can be both encoded and decoded using a trellis whose nodes (or equally states) correspond to the states of the encoder used in signal encoding and the paths between nodes belonging to two successive trellis columns of the trellis correspond to allowed state transitions between the encoder states. The code unequivocally attaches the beginning and the end state of the transition, the bit under encoding and the bits of the encoding result to each state transition. The purpose of the decoder is thus to determine successive states of the coder, i.e. transitions from one state to another, which are caused by the original bits. To determine the transitions, metrics are calculated in the decoder. There are two kinds of metrics: path metrics (also state metrics) and branch metrics. The path metrics represent the probability at which the set of symbols included in the received signal leads to the state corresponding to the node in question. The branch metrics are proportional to the probabilities of transitions. A Viterbi algorithm is usually used in decoding of a convolutional code.
The more states the code has, the more complicated decoder is needed. Usually the decoder can calculate for example eight new path metrics in parallel, whereupon 32 successive phases are needed to calculate one trellis column of a 256-state convolutional code. Another possibility is to extend parallel calculation over trellis columns, whereby four ACS-units (Add-Compare-Select) are used for one column, and to which ACS-units four more ACS-units are connected for calculating the path metrics of the next trellis column. With such an arrangement the calculation of the path metrics is advanced by two trellis columns instead of just one. Calculation of one column pair of a 256-state convolutional code necessitates 64 successive phases, but because calculation is performed over two columns, only 32 calculation phases are needed for each column. The calculation efficiency is thus the same as with eight ACS-units processing one column, but the bus width has been halved, which is a significant advantage, especially if there exists a great number of ACS-units.
We are interested in the solution wherein calculation over at least two trellis columns is performed, especially of interest is the control of the data flow routing, i.e. how old path metrics are retrieved into a path metrics calculation unit from the memory and how new path metrics are stored in the memory from the path metrics calculation unit. The prior art solutions have too complicated bus arrangements, especially if the same decoder is used for several different codes each having a different number of states.